package com.tjsinfo.tjsoa.documentationflow.xingzhengfawen.bo;

import java.util.Date;
import java.util.List;

import org.hibernate.criterion.DetachedCriteria;
import org.jbpm.taskmgmt.exe.TaskInstance;

//import com.tjsinfo.tjsoa.documentationflow.tongzhifawen.vo.TTongzhifawenNeirong;
import com.tjsinfo.tjsoa.documentationflow.xingzhengfawen.vo.FaWenInfo;
import com.tjsinfo.tjsoa.documentationflow.xingzhengfawen.vo.TXingzhengfawenNeirong;
import com.tjsinfo.tjsoa.documentationflow.xingzhengfawen.vo.TaoHongMoBan;
import com.tjsinfo.tjsoa.documentationflow.xingzhengfawen.vo.YinZhang;
import com.tjsinfo.tjsoa.system.vo.Files;
import com.tjsinfo.tjsoa.system.vo.TSystemUser;



public interface ITXingzhengfawenNeirongBO {
	/**
	 * 添加行政发文内容
	 * @param 党委发文
	 * @return 党委发文ID
	 */
	public String addTXingzhengfawenneirong(TXingzhengfawenNeirong xingzhengfawenNeirong,String hegaorenid,
			String huiqian,String zhusongid,String chaosongid,List<Files> list);
	
	public String addqfTXingzhengfawenneirong(
			TXingzhengfawenNeirong xingzhengfawenNeirong,String huiqian,String zhusongid,String chaosongid,List<Files> list) ;
	/**
	 * 添加行政发文内容
	 * @param 党委发文
	 * @return 党委发文ID
	 */
	public String addTXingzhengfawenneirong(TXingzhengfawenNeirong xingzhengfawenNeirong);

	/**
	 * 添加行政直接发文内容，并跳转至套红环节
	 */
	//public String addTXingzhengzhijiefawenneirong(
	//		TXingzhengfawenNeirong xingzhengfawenNeirong,String taohongrenid,String zhusongid,String chaosongid,List<Files> list);
	
	/**
	 * 根据ID查询行政发文
	 * @param id
	 * @return
	 */
	public TXingzhengfawenNeirong selectOneById(String id);
	
	/**
	 * 根据ID查询行政发文
	 * @param id
	 * @return
	 */
	public Boolean deleteOneById(String id);
	/**
	 * 更新行政发文内容
	 * @param zuzhibufaweiNeirong
	 * @return
	 */
	public Boolean updateTXingzhengfawenneirong(TXingzhengfawenNeirong xingzhengfawenNeirong);
	/**
	 * 示例查询行政发文
	 * @param zuzhibufaweiNeirong
	 * @return
	 */
	public List<TXingzhengfawenNeirong> findByExample(TXingzhengfawenNeirong xingzhengfawenNeirong);
	/**
	 * 查询行政发文的总行数
	 * @return
	 */
//	public Integer selectXingzhengfawenTotalLine(Integer state);
	
	/**
	 * 查询行政发文的总行数
	 * @return
	 */
//	public Integer selectXingzhengfawenTotalLine(Integer state,String biaoti,String wenhaotype);
	
	/**
	 * 查询行政发文分页
	 * @return
	 */
//	public List<TXingzhengfawenNeirong> selectXingzhengfawenPage(Integer first,Integer max,Integer state);
	
	/**
	 * 查询行政发文分页
	 * @return
	 */
//	public List<TXingzhengfawenNeirong> selectXingzhengfawenPage(Integer first,Integer max,Integer state,String biaoti,String wenhao);
	
	/**
	 * 条件查询行政发文的总行数
	 * @return
	 */
//	public Integer selectXingzhengfawenTotalLineCriteria(DetachedCriteria criteria);
	
	/**
	 * 条件查询行政发文分页
	 * @return
	 */
//	public List<TXingzhengfawenNeirong> selectXingzhengfawenPageCriteria(DetachedCriteria criteria, Integer first,Integer max);
	
	
	
	/**
	 * 条件查询党委发文分页
	 * @return
	 */
//	public List<TXingzhengfawenNeirong> selectXingzhengfawenPageCriteriaPage(DetachedCriteria criteria, Integer first,Integer max);
	
	/**
	 * 根据文号类型查询最大值
	 * @param 文号类型名称
	 * @return
	 */
	public Integer selectXingzhengfawenMaxNumber(String numbertype);
	
	/**
	 * 根据用户ID查询用户上级部门发文待办
	 * @param userId
	 * @return
	 */
//	public List<TXingzhengfawenNeirong> selectXingZhengFaWenSuperDaiBanList(Integer subDataBase,Integer dataBaseId, Integer userId,String proname);
	
	/**
	 * 根据用户ID查询用户上级部门发文待办
	 * @param userId
	 * @return
	 */
//	public List<TTongzhifawenNeirong> selectXingZhengTongZhiSuperDaiBanList(final Integer subDataBase,Integer dataBaseId, Integer userId,String proname);
	
	/**
	 * 套红模板查询
	 * @param taoHongMoBan
	 * @return
	 */
	public List<TaoHongMoBan> selectTaoHongMoBan(TaoHongMoBan taoHongMoBan);
	
	/**
	 * 印章查询
	 * @param taoHongMoBan
	 * @return
	 */
	public List<YinZhang> selectYinZhang(YinZhang yinZhang);
	
	/**
	 * 文件查询
	 * @param userid 用户ID
	 * @param first	 起始行
	 * @param max    行数
	 * @param biaoti 标题
	 * @param wenyear 年度
	 * @param wentype 文件类型
	 * @param zhuangtai 状态
	 * @param wenhao 文号
	 * @return
	 */
	public List<FaWenInfo> selectChaYueWenJian(Integer userid, Integer first,Integer max,String biaoti,String wenyear,String wentype,String zhuangtai,String wenhao,String maintypeid);
	
	/**
	 * 文件查询
	 * @param userid 用户ID
	 * @param first	 起始行
	 * @param max    行数
	 * @param biaoti 标题
	 * @param wenyear 年度
	 * @param wentype 文件类型
	 * @param zhuangtai 状态
	 * @param wenhao 文号
	 * @return
	 */
	public Integer selectChaYueWenJianCount(Integer userid,String biaoti,String wenyear,String wentype,String zhuangtai,String wenhao,String maintypeid);
	
	
	
	/**
	 * 行政流程跟踪
	 * @param first	 起始行
	 * @param max    行数
	 * @param biaoti 标题
	 * @param wentype 文件类型
	 * @param zhuangtai 状态
	 * @return
	 */
	public List<FaWenInfo> xingZhengFlowGengZong(Integer first,Integer max,String biaoti,String wentype,String zhuangtai,String fawenwenhao,String starttime,String endtime,String zhuangta);
	
	/**
	 * 行政流程跟踪行数
	 * @param first	 起始行
	 * @param max    行数
	 * @param biaoti 标题
	 * @param wentype 文件类型
	 * @param zhuangtai 状态
	 * @return
	 */
	public Integer xingZhengFlowGengZongCount(Integer first,Integer max,String biaoti,String wentype,String zhuangtai,String fawenwenhao,String starttime,String endtime,String zhuangta);
	
	/**
	 * 党委流程跟踪
	 * @param first	 起始行
	 * @param max    行数
	 * @param biaoti 标题
	 * @param wentype 文件类型
	 * @param zhuangtai 状态
	 * @return
	 */
	public List<FaWenInfo> dangweiFlowGengZong(Integer first,Integer max,String biaoti,String wentype,String zhuangtai,String fawenwenhao,String starttime,String endtime,String zhuangta);
	
	/**
	 * 党委流程跟踪行数
	 * @param first	 起始行
	 * @param max    行数
	 * @param biaoti 标题
	 * @param wentype 文件类型
	 * @param zhuangtai 状态
	 * @return
	 */
	public Integer dangweiFlowGengZongCount(Integer first,Integer max,String biaoti,String wentype,String zhuangtai,String fawenwenhao,String starttime,String endtime,String zhuangta);
	
	/**
	 * 团委流程跟踪
	 * @param first	 起始行
	 * @param max    行数
	 * @param biaoti 标题
	 * @param wentype 文件类型
	 * @param zhuangtai 状态
	 * @return
	 */
//	public List<FaWenInfo> tuanweiFlowGengZong(Integer first,Integer max,String biaoti,String wentype,String zhuangtai,Integer state);
	
	/**
	 * 团委流程跟踪行数
	 * @param first	 起始行
	 * @param max    行数
	 * @param biaoti 标题
	 * @param wentype 文件类型
	 * @param zhuangtai 状态
	 * @return
	 */
//	public Integer tuanweiFlowGengZongCount(Integer first,Integer max,String biaoti,String wentype,String zhuangtai,Integer state);
	
	public Integer wenyearmax();
	
	public Integer wenyearmin();
	
	public String dangQianHuanJie(Integer flowId);
	
	
	public List<TSystemUser> selectTsystemUserByUserIdAndDuty(Integer userid,String DutyName);
	
	public List<TSystemUser> selectTsystemUserByUserIdAndDuty(String DutyName);
	public List<TSystemUser> selectTsystemUserByDemIdAndDuty(String demId,String DutyName);
	
	public Integer selectTaskCont(Integer userId,String node,String proname);
	
//	public Integer selectDownXingZhengfaCount(Integer dataBaseId,Integer subUserId,String proname);
	
//	public Integer selectDownDangWeifaCount(Integer dataBaseId,Integer subUserId,String proname);
	
	public List<TaskInstance> selectTaskInstanceByUserIdAndProcessName(Integer userId,String processname);
	
	
	public Boolean deleteTask(Integer taskId);
}
